package com.vhall.component.service.export;

import com.vhall.component.entity.data.vo.DataExportParamVO;
import com.vhall.component.entity.data.vo.DataExportRspVO;
import com.vhall.component.entity.export.ExportEntity;
import com.vhall.component.entity.export.vo.*;
import com.vhall.component.entity.interactive.vo.QuestionConsoleExportReqVO;
import com.vhall.component.entity.page.vo.PageVO;
import com.vhall.component.entity.room.vo.RoomAdminListReqVO;
import com.vhall.component.plugin.common.support.Token;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * @author guoxin.wang
 * @date 2021-06-15 14:00
 */
public interface ExportService {

    /**
     * exportList
     *
     * @param reqVO 参数
     * @return 返回值
     */
    ExportPage<ExportListRspVO> exportList(ExportListReqVO reqVO);

    /**
     * 导出直播间列表
     *
     * @param token
     * @param vo
     * @return
     * @date 2022/9/1
     */
    Boolean listExport(Token token, RoomAdminListReqVO vo);

    /**
     * 控制台-导出问卷
     *
     * @param reqVO 参数
     * @return 返回值
     * @date 2022/9/1
     */
    Boolean exportQuestionAnswer(QuestionConsoleExportReqVO reqVO);

    /**
     * createExport
     *
     * @param ee 参数
     * @return 返回值
     */
    Boolean createExport(ExportEntity ee);

    /**
     * whiteAccountTemplate
     *
     * @param response 参数
     * @throws Exception 异常信息
     */
    void whiteAccountTemplate(HttpServletResponse response) throws Exception;

    /**
     * getAllInfo
     *
     * @param reqVO 参数
     * @return 返回值
     */
    List<DataExportRspVO> getAllInfo(DataExportParamVO reqVO);

    /**
     * getAllInfoNum
     *
     * @param reqVO 参数
     * @return 返回值
     */
    Integer getAllInfoNum(DataExportParamVO reqVO);

    /**
     * lotteryTemplate
     *
     * @param response 参数
     * @throws Exception 异常信息
     */
    void lotteryTemplate(HttpServletResponse response) throws Exception;

    /**
     * filterTemplate
     *
     * @param response 参数
     * @throws IOException 异常信息
     */
    void filterTemplate(HttpServletResponse response) throws IOException;

    /**
     * 获取admin平台导出列表
     *
     * @param reqVO   请求参数
     * @param adminId 管理员id
     * @return 导出列表
     * @author yuanzh
     * @date 2021/11/19
     */
    PageVO<ExportAdmRspVO> exportList(ExportAdmListReqVO reqVO, Integer adminId);

    /**
     * 创建下载任务
     *
     * @param reqVO   请求参数
     * @param adminId 管理员id
     * @return 返回值
     */
    Boolean createExport(ExportAdmCreateReqVO reqVO, Integer adminId);

    /**
     * 重新导出
     *
     * @param reqVO 请求参数
     * @return 返回值
     */
    Boolean reExport(AdmReExportReqVO reqVO);

    /**
     * 获取导出文件名称
     *
     * @param roomName       房间名称
     * @param type           导出类型
     * @param exportTypeName 特殊导出类型名称
     * @return
     */
    String getFileName(String roomName, Integer type, String exportTypeName);
}
